#ifndef CHARTUTILS_H
#define CHARTUTILS_H

#include <QtCharts>

namespace ChartUtils
{
    /**
     * @brief makeFilePath 生成图表数据文件名
     * @param startTime 实验开始时间
     * @param sampleName 样本名称
     * @return 文件全路径
     */
    QString makeFilePath(const QDateTime &startTime, const QString &sampleName);

    /**
     * @brief autosetAxiesRange 调整刻度到指定的基准刻度倍数上
     * @param pAxis 数值轴
     * @param maxValue 数据最大值
     * @param baseScale 基准刻度
     * @param fillMargin 是否填充边距，默认数据最大值占据最大量程的80%
     */
    void autosetAxiesRange(QValueAxis *pAxis, double maxValue, int baseScale, bool fillMargin = false);

    /**
     * @brief readChartData 从文件中加载图表数据
     * @param path 数据文件路径
     * @param points 数据点
     * @return 是否加载成功
     */
    bool readChartData(const QString &path, QList<QPointF> &points);

    /**
     * @brief paintChart 从文件中加载数据，绘制图表
     * @param path 数据文件路径
     * @param pAxisX 数值轴 X
     * @param pAxisY 数值轴 Y
     * @param pLine 折线
     * @param xmax X轴最大显示值，-1：自适应量程
     * @param ymax Y轴最大显示值，-1：自适应量程
     * @param autosetAxiesRange 是否自动调整图表坐标轴
     */
    void paintChart(const QString &path, QValueAxis *pAxisX, QValueAxis *pAxisY, QLineSeries *pLine, double xmax = -1, double ymax = -1, bool autosetAxiesRange = true);
};

#endif // CHARTUTILS_H
